Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Prototype] Mesh receptacle annotation automation #1042

Draft
wants to merge 16 commits into
base: main
Choose a base branch
from

Conversation

aclegg3
Copy link
Contributor

@aclegg3 aclegg3 commented Dec 16, 2022

Motivation and Context

The utilities in this feature set are intended to assist users with annotating receptacles for procedural clutter object placement (e.g. for Habitat 2.0 rearrangement tasks).

See the README for more details.

Existing tools in Habitat-lab depend on the pre-process of annotating receptacle metadata for each and every scene. Currently this process is manual, requiring an artist to place bounding boxes using a modeling software (e.g. Blender) and export a JSON configuration object which is parsed by Habitat sampling logic.

The new approach utilizes Habitat-sim’s Recast|Detour NavMesh integration to compute a set of surfaces which may support or contain the clutter objects. The resulting mesh data is then post-processed into mesh receptacle data structures and manually culled or adjusted by an artist or user in Blender.

The final result is a set of PLY mesh files and a chunk of JSON metadata which can be included in the stage or object configuration files.

NOTE: This is a Draft PR with multiple moving parts which will be broken into sub-PRs for review, polish, and merge to main. Expect changes.

New features include:

  • TriangleMeshReceptacle class - area weighted uniform sampling of 3D positions from an arbitrary triangle mesh surface. Can be loaded from .PLY format.
  • Set of scripts for receptacle annotation automation + README to explain the context and process.
  • Sampling efficiency improvement: Added option to remove unstable objects instead of throwing away the episode if minimum number of objects for each sample can still be satisfied.
  • Improved reporting of sampling statistics and timings for RearrangeGenerator.
  • Added debug images of unstable objects to improve receptacle/scene debugging.

Changes include:

  • Receptacle debugging visualization now uses DebugLineRender instead of attaching wire-frames to objects.
  • bugfix: max number of sample attempts were not reset after successful pairing.
  • bugfix: save file paths for DebugVisualizer were not always propagated correctly.

How Has This Been Tested

Locally via the steps outlined in the README.
New test added for receptacles (WIP)

  • TODO: will require an accompanying branch in habitat-sim for testing.

Types of changes

  • Docs change / refactoring / dependency upgrade
  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)

Checklist

  • My code follows the code style of this project.
  • My change requires a change to the documentation.
  • I have updated the documentation accordingly.
  • I have read the CONTRIBUTING document.
  • I have completed my CLA (see CONTRIBUTING)
  • I have added tests to cover my changes.
  • All new and existing tests passed.

@facebook-github-bot facebook-github-bot added the CLA Signed Do not delete this pull request or issue due to inactivity. label Dec 16, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CLA Signed Do not delete this pull request or issue due to inactivity.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants